--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
sbapp/kivymd/app.py 0.7.0 (f21569fa) Text, 4.22 KB
T8b949e"""
Themes/Material App
===================
This module contains :class:`MDApp` class that is inherited from
:class:`~kivy.app.App`. :class:`MDApp` has some properties needed for ``KivyMD``
library (like :attr:`~MDApp.theme_cls`). You can turn on the monitor displaying
the current ``FPS`` value in your application:
.. code-block:: python
KV = '''
MDScreen:
MDLabel:
text: "Hello, World!"
halign: "center"
'''
from kivy.lang import Builder
from kivymd.app import MDApp
class MainApp(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
self.fps_monitor_start()
MainApp().run()
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/fps-monitor.png
:width: 350 px
:align: center
"""
Te6edf3__all__ Tff7b72= Tb4b4b4(Ta5d6ff"Ta5d6ffMDAppTa5d6ff"Tb4b4b4,Tb4b4b4)
Tff7b72import T7ee787os
Tff7b72from T7ee787kivyT7ee787.T7ee787app Tff7b72import Te6edf3App
Tff7b72from T7ee787kivyT7ee787.T7ee787clock Tff7b72import Te6edf3Clock
Tff7b72from T7ee787kivyT7ee787.T7ee787lang Tff7b72import Te6edf3Builder
Tff7b72from T7ee787kivyT7ee787.T7ee787logger Tff7b72import Te6edf3Logger
Tff7b72from T7ee787kivyT7ee787.T7ee787properties Tff7b72import Te6edf3ObjectPropertyTb4b4b4, Te6edf3StringProperty
Tff7b72from T7ee787kivymdT7ee787.T7ee787theming Tff7b72import Te6edf3ThemeManager
Tff7b72class T56d364FpsMonitoringTb4b4b4:
T8b949e"""Implements a monitor to display the current FPS in the toolbar."""
Tff7b72def Td2a8fffps_monitor_startTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3anchorTb4b4b4: Tffa657str Tff7b72= Ta5d6ff"Ta5d6fftopTa5d6ff"Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
T8b949e"""Adds a monitor to the main application window."""
Tff7b72def Td2a8ffadd_monitorTb4b4b4(Tff7b72*Te6edf3argsTb4b4b4)Tb4b4b4:
Tff7b72from T7ee787kivyT7ee787.T7ee787coreT7ee787.T7ee787window Tff7b72import Te6edf3Window
Tff7b72from T7ee787kivymdT7ee787.T7ee787utilsT7ee787.T7ee787fpsmonitor Tff7b72import Te6edf3FpsMonitor
Te6edf3monitor Tff7b72= Te6edf3FpsMonitorTb4b4b4(Te6edf3anchorTff7b72=Te6edf3anchorTb4b4b4)
Te6edf3monitorTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Te6edf3WindowTff7b72.Td2a8ffadd_widgetTb4b4b4(Te6edf3monitorTb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3add_monitorTb4b4b4)
Tff7b72class T56d364MDAppTb4b4b4(Te6edf3AppTb4b4b4, Te6edf3FpsMonitoringTb4b4b4)Tb4b4b4:
T8b949e"""
Application class, see :class:`~kivy.app.App` class documentation for more
information.
"""
Te6edf3icon Tff7b72= Te6edf3StringPropertyTb4b4b4(Ta5d6ff"Ta5d6ffkivymd/images/logo/kivymd-icon-512.pngTa5d6ff"Tb4b4b4)
T8b949e"""
See :attr:`~kivy.app.App.icon` attribute for more information.
.. versionadded:: 1.1.0
:attr:`icon` is an :class:`~kivy.properties.StringProperty`
adn default to `kivymd/images/logo/kivymd-icon-512.png`.
"""
Te6edf3theme_cls Tff7b72= Te6edf3ObjectPropertyTb4b4b4(Tb4b4b4)
T8b949e"""
Instance of :class:`~ThemeManager` class.
.. Warning:: The :attr:`~theme_cls` attribute is already available
in a class that is inherited from the :class:`~MDApp` class.
The following code will result in an error!
.. code-block:: python
class MainApp(MDApp):
theme_cls = ThemeManager()
theme_cls.primary_palette = "Teal"
.. Note:: Correctly do as shown below!
.. code-block:: python
class MainApp(MDApp):
def build(self):
self.theme_cls.primary_palette = "Teal"
:attr:`theme_cls` is an :class:`~kivy.properties.ObjectProperty`.
"""
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Tff7b72selfTff7b72.Td2a8fftheme_cls Tff7b72= Te6edf3ThemeManagerTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffload_all_kv_filesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3path_to_directoryTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
T8b949e"""
Recursively loads KV files from the selected directory.
.. versionadded:: 1.0.0
"""
Tff7b72for Te6edf3path_to_dirTb4b4b4, Te6edf3dirsTb4b4b4, Te6edf3files Tff7b72in Te6edf3osTff7b72.Td2a8ffwalkTb4b4b4(Te6edf3path_to_directoryTb4b4b4)Tb4b4b4:
T8b949e# When using the `load_all_kv_files` method, all KV files
T8b949e# from the `KivyMD` library were loaded twice, which leads to
T8b949e# failures when using application built using `PyInstaller`.
Tff7b72if Ta5d6ff"Ta5d6ffkivymdTa5d6ff" Tff7b72in Te6edf3path_to_directoryTb4b4b4:
Te6edf3LoggerTff7b72.Td2a8ffcriticalTb4b4b4(
Ta5d6ff"Ta5d6ffKivyMD: Ta5d6ff"
Ta5d6ff"Ta5d6ffDo not use the word Ta5d6ff'Ta5d6ffkivymdTa5d6ff'Ta5d6ff in the name of the directory Ta5d6ff"
Ta5d6ff"Ta5d6fffrom where you download KV filesTa5d6ff"
Tb4b4b4)
Tff7b72if Tb4b4b4(
Ta5d6ff"Ta5d6ffvenvTa5d6ff" Tff7b72in Te6edf3path_to_dir
Tff7b72or Ta5d6ff"Ta5d6ff.buildozerTa5d6ff" Tff7b72in Te6edf3path_to_dir
Tff7b72or Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Ta5d6ff"Ta5d6ffkivymdTa5d6ff"Tb4b4b4) Tff7b72in Te6edf3path_to_dir
Tb4b4b4)Tb4b4b4:
Tff7b72continue
Tff7b72for Te6edf3name_file Tff7b72in Te6edf3filesTb4b4b4:
Tff7b72if Tb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffsplitextTb4b4b4(Te6edf3name_fileTb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ff.kvTa5d6ff"
Tff7b72and Te6edf3name_file Tff7b72!= Ta5d6ff"Ta5d6ffstyle.kvTa5d6ff" T8b949e# if use PyInstaller
Tff7b72and Ta5d6ff"Ta5d6ff__MACOSTa5d6ff" Tff7b72not Tff7b72in Te6edf3path_to_dir T8b949e# if use Mac OS
Tb4b4b4)Tb4b4b4:
Te6edf3path_to_kv_file Tff7b72= Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3path_to_dirTb4b4b4, Te6edf3name_fileTb4b4b4)
Te6edf3BuilderTff7b72.Td2a8ffload_fileTb4b4b4(Te6edf3path_to_kv_fileTb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────